home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / python2.6 / UserDict.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-11-11  |  9KB  |  293 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''A more or less complete user-defined wrapper around dictionary objects.'''
  5.  
  6. class UserDict:
  7.     
  8.     def __init__(self, dict = None, **kwargs):
  9.         self.data = { }
  10.         if dict is not None:
  11.             self.update(dict)
  12.         
  13.         if len(kwargs):
  14.             self.update(kwargs)
  15.         
  16.  
  17.     
  18.     def __repr__(self):
  19.         return repr(self.data)
  20.  
  21.     
  22.     def __cmp__(self, dict):
  23.         if isinstance(dict, UserDict):
  24.             return cmp(self.data, dict.data)
  25.         return cmp(self.data, dict)
  26.  
  27.     
  28.     def __len__(self):
  29.         return len(self.data)
  30.  
  31.     
  32.     def __getitem__(self, key):
  33.         if key in self.data:
  34.             return self.data[key]
  35.         if hasattr(self.__class__, '__missing__'):
  36.             return self.__class__.__missing__(self, key)
  37.         raise KeyError(key)
  38.  
  39.     
  40.     def __setitem__(self, key, item):
  41.         self.data[key] = item
  42.  
  43.     
  44.     def __delitem__(self, key):
  45.         del self.data[key]
  46.  
  47.     
  48.     def clear(self):
  49.         self.data.clear()
  50.  
  51.     
  52.     def copy(self):
  53.         if self.__class__ is UserDict:
  54.             return UserDict(self.data.copy())
  55.         import copy as copy
  56.         data = self.data
  57.         
  58.         try:
  59.             self.data = { }
  60.             c = copy.copy(self)
  61.         finally:
  62.             self.data = data
  63.  
  64.         c.update(self)
  65.         return c
  66.  
  67.     
  68.     def keys(self):
  69.         return self.data.keys()
  70.  
  71.     
  72.     def items(self):
  73.         return self.data.items()
  74.  
  75.     
  76.     def iteritems(self):
  77.         return self.data.iteritems()
  78.  
  79.     
  80.     def iterkeys(self):
  81.         return self.data.iterkeys()
  82.  
  83.     
  84.     def itervalues(self):
  85.         return self.data.itervalues()
  86.  
  87.     
  88.     def values(self):
  89.         return self.data.values()
  90.  
  91.     
  92.     def has_key(self, key):
  93.         return key in self.data
  94.  
  95.     
  96.     def update(self, dict = None, **kwargs):
  97.         if dict is None:
  98.             pass
  99.         elif isinstance(dict, UserDict):
  100.             self.data.update(dict.data)
  101.         elif isinstance(dict, type({ })) or not hasattr(dict, 'items'):
  102.             self.data.update(dict)
  103.         else:
  104.             for k, v in dict.items():
  105.                 self[k] = v
  106.             
  107.         if len(kwargs):
  108.             self.data.update(kwargs)
  109.         
  110.  
  111.     
  112.     def get(self, key, failobj = None):
  113.         if key not in self:
  114.             return failobj
  115.         return self[key]
  116.  
  117.     
  118.     def setdefault(self, key, failobj = None):
  119.         if key not in self:
  120.             self[key] = failobj
  121.         
  122.         return self[key]
  123.  
  124.     
  125.     def pop(self, key, *args):
  126.         return self.data.pop(key, *args)
  127.  
  128.     
  129.     def popitem(self):
  130.         return self.data.popitem()
  131.  
  132.     
  133.     def __contains__(self, key):
  134.         return key in self.data
  135.  
  136.     
  137.     def fromkeys(cls, iterable, value = None):
  138.         d = cls()
  139.         for key in iterable:
  140.             d[key] = value
  141.         
  142.         return d
  143.  
  144.     fromkeys = classmethod(fromkeys)
  145.  
  146.  
  147. class IterableUserDict(UserDict):
  148.     
  149.     def __iter__(self):
  150.         return iter(self.data)
  151.  
  152.  
  153. import _abcoll
  154. _abcoll.MutableMapping.register(IterableUserDict)
  155.  
  156. class DictMixin:
  157.     
  158.     def __iter__(self):
  159.         for k in self.keys():
  160.             yield k
  161.         
  162.  
  163.     
  164.     def has_key(self, key):
  165.         
  166.         try:
  167.             value = self[key]
  168.         except KeyError:
  169.             return False
  170.  
  171.         return True
  172.  
  173.     
  174.     def __contains__(self, key):
  175.         return self.has_key(key)
  176.  
  177.     
  178.     def iteritems(self):
  179.         for k in self:
  180.             yield (k, self[k])
  181.         
  182.  
  183.     
  184.     def iterkeys(self):
  185.         return self.__iter__()
  186.  
  187.     
  188.     def itervalues(self):
  189.         for _, v in self.iteritems():
  190.             yield v
  191.         
  192.  
  193.     
  194.     def values(self):
  195.         return [ v for _, v in self.iteritems() ]
  196.  
  197.     
  198.     def items(self):
  199.         return list(self.iteritems())
  200.  
  201.     
  202.     def clear(self):
  203.         for key in self.keys():
  204.             del self[key]
  205.         
  206.  
  207.     
  208.     def setdefault(self, key, default = None):
  209.         
  210.         try:
  211.             return self[key]
  212.         except KeyError:
  213.             self[key] = default
  214.  
  215.         return default
  216.  
  217.     
  218.     def pop(self, key, *args):
  219.         if len(args) > 1:
  220.             raise TypeError, 'pop expected at most 2 arguments, got ' + repr(1 + len(args))
  221.         len(args) > 1
  222.         
  223.         try:
  224.             value = self[key]
  225.         except KeyError:
  226.             if args:
  227.                 return args[0]
  228.             raise 
  229.         except:
  230.             args
  231.  
  232.         del self[key]
  233.         return value
  234.  
  235.     
  236.     def popitem(self):
  237.         
  238.         try:
  239.             (k, v) = self.iteritems().next()
  240.         except StopIteration:
  241.             raise KeyError, 'container is empty'
  242.  
  243.         del self[k]
  244.         return (k, v)
  245.  
  246.     
  247.     def update(self, other = None, **kwargs):
  248.         if other is None:
  249.             pass
  250.         elif hasattr(other, 'iteritems'):
  251.             for k, v in other.iteritems():
  252.                 self[k] = v
  253.             
  254.         elif hasattr(other, 'keys'):
  255.             for k in other.keys():
  256.                 self[k] = other[k]
  257.             
  258.         else:
  259.             for k, v in other:
  260.                 self[k] = v
  261.             
  262.         if kwargs:
  263.             self.update(kwargs)
  264.         
  265.  
  266.     
  267.     def get(self, key, default = None):
  268.         
  269.         try:
  270.             return self[key]
  271.         except KeyError:
  272.             return default
  273.  
  274.  
  275.     
  276.     def __repr__(self):
  277.         return repr(dict(self.iteritems()))
  278.  
  279.     
  280.     def __cmp__(self, other):
  281.         if other is None:
  282.             return 1
  283.         if isinstance(other, DictMixin):
  284.             other = dict(other.iteritems())
  285.         
  286.         return cmp(dict(self.iteritems()), other)
  287.  
  288.     
  289.     def __len__(self):
  290.         return len(self.keys())
  291.  
  292.  
  293.